package view;

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JPanel;

import core.jogo.Tabuleiro;

public class TabuleiroView extends JPanel {

	private int dim = 650;
	private final int numCasas = 8;
	private int tamanhoCasas;
	private int tamanhoPecas;
	private int diferenca;
	private int[] casas;
	private final int[] CASAS_INICIAIS={
			1, 1, 1, 1,
			 1, 1, 1, 1,
			1, 1, 1, 1,
			 0, 0, 0, 0,
			0, 0, 0, 0,
			 -1,-1,-1,-1,
			-1,-1,-1,-1,
			 -1,-1,-1,-1,
			};
	
	public TabuleiroView(){
		setCasas(CASAS_INICIAIS);
		tamanhoCasas = dim/numCasas;
		tamanhoPecas = (int) Math.round(0.9*tamanhoCasas);
		diferenca = (tamanhoCasas - tamanhoPecas)/2;
	}
	
	public void novoJogo(){
		setCasas(CASAS_INICIAIS);
		repaint();
	}
	
	@Override
	public void paintComponent(Graphics g){
		super.paintComponent(g);
		int i, j, inicioPreta;
		for(i = 0; i < numCasas; i++){
			if(i%2 == 1)
				inicioPreta = tamanhoCasas;
			else
				inicioPreta = 0;	
			for(j = 0; j < numCasas/2; j++){							
				g.fillRect(inicioPreta + j*2*tamanhoCasas, i*tamanhoCasas,tamanhoCasas, tamanhoCasas);
			}
			if(i%2 == 1 && numCasas%2 == 1){
				g.fillRect(inicioPreta + j*2*tamanhoCasas, i*tamanhoCasas,tamanhoCasas, tamanhoCasas);
				
				
				
			}
		}
		i=0;		
		for(Integer k : getCasas()){
			if(k > 0){
				//Pe�a Preta 
				g.setColor(Color.BLACK);
				if(k.equals(1))
					pintarPeca(
						diferenca + tamanhoCasas*((i%4)*2 + i/4%2),
						diferenca + tamanhoCasas*(7-i/4), 
						tamanhoPecas,
						g);
				
				if(k.equals(2))
					pintarDama(
							diferenca + tamanhoCasas*((i%4)*2 + i/4%2),
							diferenca + tamanhoCasas*(7-i/4), 
							tamanhoPecas,
							g);
				
			}
			if(k < 0){
				//Pe�a Vermelha
				g.setColor(Color.RED);
				if(k.equals(-1))
					pintarPeca(
						diferenca + tamanhoCasas*((i%4)*2 + i/4%2),
						diferenca + tamanhoCasas*(7-i/4), 
						tamanhoPecas,
						g);
				
				if(k.equals(-2))
					pintarDama(
							diferenca + tamanhoCasas*((i%4)*2 + i/4%2),
							diferenca + tamanhoCasas*(7-i/4), 
							tamanhoPecas,
							g);
			
			}
			
			
			
			i++;
		}
	}
	
	private void pintarPeca(int x, int y, int tamanho, Graphics g){
		
		g.fillOval(x, y, tamanho, tamanho);
		
	}
	private void pintarDama(int x, int y, int tamanho, Graphics g){
		g.fillOval(x, y, tamanho, tamanho);
		g.setColor(Color.white);
		g.fillOval(x + tamanhoPecas/4, y + tamanhoPecas/4, tamanho/2, tamanho/2);
//		g.setColor(corAntiga);
	}

	public int[] getCasas() {
		return casas;
	}

	public void setCasas(int[] casas) {
		this.casas = casas;
	}
	
	

}
